package com.autumn.annotations.run;

import com.autumn.annotations.aop.config.AopMainConfig;
import com.autumn.annotations.aop.logic.Cacl;
import com.autumn.xa.common.util.FrameworkUtils;
import com.autumn.annotations.transactional.Service;
import com.autumn.annotations.transactional.TxDemoConfig;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * ClassName: TransactionalRun
 *
 * @Description:
 * @Author: wangqiuyang
 * @Date: 2022/1/27 11:04 上午
 * History:
 * <author>          <time>          <version>          <desc>
 * wangqiuyang    2022/1/27 11:04 上午   @Version 1.0        描述
 */
public class TransactionalRun {
    /**
     * Description: 事物 demo
     * @param
     * @return: void
     * @author: wangqiuyang
     * @Date: 2022/1/25 2:42 下午
     */
    @Test
    public void aopDemo () {
        AnnotationConfigApplicationContext contxt = new AnnotationConfigApplicationContext(TxDemoConfig.class);

        System.out.println("ioc 初始化完成 ......");

        // 输出所有的bean名字
        FrameworkUtils.printAllBeanNames(contxt);

        Service service = contxt.getBean(Service.class);

        System.out.println("--------正常---------");
        service.insert(false);

        System.out.println("-----------------");

        System.out.println("--------异常---------");
        service.insert(true);

        /*
            要点
            1。配置类加上 @EnableTransactionManagement 开启事物 springboot可以不加
            2。配置datasource 数据源 / jdbcTemplate / 事物管理器 PlatformTransactionManager 绑定数据源
            3。dao / service 注入ioc
            4。加事物注解
         */

        // 关闭容器
        System.out.println("ioc 容器开始关闭 ......");
        contxt.close();
        System.out.println("ioc 容器关闭完成 ......");
    }
}
